The protection of software has many aspects. Some software applications are augmented to detect tampering to avoid malfunctions of the software and to prevent malicious use. Tampering can include the modification of functional modules or the introduction of a virus or other forms of malware. Other software applications can include protections to detect the use of a debugger to prevent a reverse engineering of the software. A debugger can be useful to someone who wishes to discover the functionality of a software application or to modify the application for malicious purposes. Other software may include various verifications to ensure the integrity or authenticity of the software application. Traditionally, a software developer generates protection against tampering, against the use of debuggers, against reverse engineering, and the like, by generating these protections during the software creation process. As such, the protections are fixed and are immutable in the binary image on a software storage device, such as compact disk. As a result, a malicious entity has a static target to attack. Such a static target, even if expertly conceived and executed, can over time be successfully attacked, reverse engineered, and copied or modified without the permission of the original software developer. The present invention addresses these concerns and others.